//
//  main.m
//  Block3
//
//  Created by cora1n on 14-8-13.
//  Copyright (c) 2014年 devwu. All rights reserved.
//

#import <Foundation/Foundation.h>
//Block 的简写形式

struct Person
{
    int age;
    char *name;
};

typedef struct{
    int age;
    char *name;
} Person;


//采用typedef简化Block的声明
typedef void(^Block)(int a,int b);

int main(int argc, const char * argv[])
{
//    struct Person p1;
//    p1.age = 10;
//    p1.name = "zhangsan";
//    
//    Person p2;
//    Person p3;
//
    
    //简化前
//    void (^block1)(int a,int b)=^(int a,int b)
//    {
//        
//    };
//    //简化后
//    Block b1 = ^(int a,int b)
//    {
//        
//    };
   
    
    
    
    //block 的内存管理
    
//    __block int i =10;
    __block NSString* str = @"";
    //block 的实现语法 ^返回值类型(参数列表);
    Block b1 = ^void(int a,int b)
    {
        //在块中,不可修改外部变量
        //当需要修改外部变量时,需要在外部变量的前边加上__block 标识
        str = @"123";
        NSLog(@"block 内:::::%@",str);
    };
    b1(1,1);
    NSLog(@"block 外::::::%@",str);
    
    return 0;
}
void blockDemo1(void (^block1)(int a,int b))
{
    
}
void blockDemo2(Block b)
{
    
}

